<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <title>Group Project</title>
		<meta http-equiv="content-type"	content="text/html; charset=utf-8" />
        <script type="text/javascript" src="jsdiff.js"></script>
        <script type="text/javascript" src="tools.js"></script>
		<link rel="stylesheet" type="text/css" href="css/stylesheet.css" />
        <script type="text/javascript">
            var testcase = [
                ["", "", "", ""], //Edge cases
                [" ","","",""],
                [""," ",""," "],
                ["one", "two", "one", "two"], //Basic single change
                ["one two", "two one", "one two", "two one"], //Basic block move
                ["one two three", "three two one", "one two three", "three two one"],
                ["one tow three", "one two three four", "one tow three", "one two three four"],
				["ηος αβοθτ σομε γρεεκ?", "ηος γρεεκ σομε αβοθτ?", "ηος αβοθτ σομε γρεεκ?", "ηος γρεεκ σομε αβοθτ?"],
				["maybe we could try something of this ilk...", "maybe something of this we could try ilk...", "maybe we could try something on this ilk...", "maybe something on this we could try ilk..."],
				//same as above, typed on a Georgian keyboard layout :). IE, despite not being able to show the characters, can still apply the diff correctly 
				["მაყბე წე ცოულდ ტრყ სომეტჰინგ ოფ ტჰის ილკ...", "მაყბე სომეტჰინგ ოფ ტჰის წე ცოულდ ტრყ ილკ...", "მაყბე წე ცოულდ ტრყ სომეტჰინგ ონ ტჰის ილკ...", "მაყბე სომეტჰინგ ონ ტჰის წე ცოულდ ტრყ ილკ..."],
				["noo we wont smoething mroe overlappping", "now we want something more overlappping", "noo we wont smoething mroe overlapping", "now we want something more overlapping"],
				["try the cse where both usurs have changed th same pace.", "try the case where both users have changed the same place.", "try the case where both usurs have changed th same place.", "try the case where both users have changed the same place."],
				["<p><b>TinyMCE</b> is actually using <i>HTML</i>, so let's tset with that.</p>","<p><b>TinyMCE</b> is actually using <b>HTML</b>, so let's <u>test</u> with that.</p>", "<p><i>TinyMCE</i> is actually using <i>HTML</i>, so let's tset with that.</p>","<p><i>TinyMCE</i> is actually using <b>HTML</b>, so let's <u>test</u> with that.</p>"],
				["<p>If someone bolds the entire sentence</p>", "<p><b>If someone bolds the entire sentence</b></p>", "<p>If someone bolds, while someone else edits, the entire sentence</p>",  "<p><b>If someone bolds, while someone else edits, the entire sentence</b></p>"],

				//Want more Greeeen (an actual example from wiktionary. The first user changed the definitions, the second user changed the translations, and it all came out right :)
				["{{wikipedia}} {{also|Alphabet}} ==English== ===Etymology=== From {{LL.}} {{term|alphabetum|alphabētum|lang=la}} < {{etyl|grc}} {{term|sc=polytonic|αλφάβητος|tr=alphabētos|lang=grc}}, from the first two letters of the [[Greek alphabet]], {{term|alpha}} (Α) and {{term|beta}} (Β), from [[Phoenician]] {{term|aleph}} {{term|sc=Phnx|𐤀||ox|lang=phn}} and {{term|beth}} {{term|sc=Phnx|𐤁||house|lang=phn}}, so called because they were [[pictogram]]s of those objects.  ===Pronunciation=== * {{IPA|/ˈæl.fəˌbɛt/}}, {{SAMPA|/\"{lf@%bEt/}} * {{audio|en-us-alphabet.ogg|Audio (US)}} * {{hyphenation|al|pha|bet}} ===Noun=== {{en-noun}} # An ordered set of [[letter]]s used in a [[language]], for example the [[English]] alphabet.  # {{math}} In [[mathematics]], the finite set of symbols accepted by a given language.  ====Derived terms==== * [[alphabetic]], [[alphabetical]] * [[alphabetize]] * [[alphabet soup]] * [[alphanumeric]], [[alphanumerical]] * [[Cyrillic alphabet]] * [[Greek alphabet]] * [[Latin alphabet]] * [[Phoenician alphabet]] * [[phonetic alphabet]] * [[Roman alphabet]] * [[Romanian alphabet]] * [[Russian alphabet]] * [[Ukrainian alphabet]] ====See also==== * [[Appendix:Hebrew alphabet]] ====Translations==== {{trans-top|an ordered set of letters used in a language}} * Albanian: {{t+|sq|alfabet|xs=Albanian}} * Alsatian: [[Alphabet]] * Arabic: {{Arab|[[حروف الهجاء|حُرُوفُ الهِجَاء]]}} {{IPAchar|(ħurúːf al-hijáː’)}}, {{Arab|[[ابجد|أبْجَد]]}} {{IPAchar|(’ábʤad)}}, {{Arab|[[الألفباء|الألِفْبَاء]]}} {{IPAchar|(al-’alifbáː’)}} * Armenian: {{t-|hy|այբուբեն|tr=aybuben|sc=Armn|xs=Armenian}} * [[Asturian]]: [[alfabetu]] {{m}} * Bosnian: {{t+|bs|abeceda|f}} * Bulgarian: [[азбука]] (ázbuka) ''(Cyrillic alphabet) f'', [[алфабет]] (alfabet) * [[Catalan]]: [[alfabet]] {{m}} * Chinese: [[字母]] (zìmǔ) * Croatian: {{t+|hr|abeceda|f|alt=abecéda}}, {{t-|hr|alfabet|m|alt=alfàbēt}} * Czech: {{t+|cs|abeceda|f}} * Dutch: {{t+|nl|alfabet}} * Esperanto: {{t+|eo|alfabeto|xs=Esperanto}} * Estonian: {{t+|et|tähestik}} * Filipino: [[alpabeto]] * Finnish: {{t+|fi|aakkoset|p}}, {{t+|fi|aakkosto}} * French: {{t+|fr|alphabet|m}} * Georgian: [[ანბანი]] (anbani) * German: {{t+|de|Alphabet|n}} * Greek: {{t+|el|αλφάβητο|n|sc=Grek}} (alfávito) * Hebrew: [[אלף־בית]] (alef-bét), [[אלפבית]] (alpabet) * Hungarian: {{t+|hu|ábécé}} * Icelandic: {{t+|is|stafróf|n}}, {{t-|is|rittáknakerfi|n}} * [[Ido]]: [[alfabeto]] * Indonesian: {{t+|id|abjad|xs=Indonesian}}, {{t+|id|alfabet|xs=Indonesian}} {{trans-mid}} * [[Interlingua]]: [[alphabeto]] * Italian: {{t+|it|alfabeto|m}} * Japanese: {{t+|ja|アルファベット|tr=arufabetto|sc=Jpan}} * Korean: [[알파벳]] (alpabet) * Latin: {{t+|la|alphabetum|n}}, {{t+|la|abecedarium|n|alt=abecedārium}} * Lithuanian: [[abėcėlė]] {{f}}, [[alfabetas]] {{m}} * " +
					"Maltese: {{t-|mt|alfabet|xs=Maltese}} * Norwegian: {{t+|no|alfabet|n}} * Polish: {{t+|pl|alfabet|m}} * Portuguese: {{t+|pt|alfabeto|m}} * Romanian: {{t+|ro|alfabet|n}} * Russian: {{t+|ru|алфавит|m|tr=alfavít|sc=Cyrl}}, {{t+|ru|азбука|f|tr=ázbuka|sc=Cyrl}} * Serbian: *: Cyrillic: [[азбука]] ''(Cyrillic alphabet) f'', [[абецеда]] ''(Roman alphabet) f'' *: Roman: [[azbuka]] ''(Cyrillic alphabet) f'', [[abeceda]] ''(Roman alphabet) f'' * Slovene: {{t+|sl|abeceda|f}} * Spanish: {{t+|es|alfabeto|m}}, {{t+|es|abecedario|m}} * Swedish: {{t+|sv|alfabet|n}} * [[Tatar]]: [[älifba]] * [[Telugu]]: {{t|te|అక్షరమాల|tr=aksharamaala|sc=Telu}} * Thai: {{Thai|[[ตัวอักษร]]}} (tua akson), {{Thai|[[อักษร]]}} (akson) * Ukrainian: {{t+|uk|абетка|f|tr=abétka|sc=Cyrl|xs=Ukrainian}}, {{t+|uk|алфавіт|m|tr=alfávít|sc=Cyrl|xs=Ukrainian}}, {{t-|uk|азбука|f|tr=azbúka|sc=Cyrl|xs=Ukrainian}}, {{t-|uk|альфабет|m|tr=al’fabét|sc=Cyrl|xs=Ukrainian}} * [[Volapük]]: {{t+|vo|lafab|xs=Volapük}} * [[West Frisian]]: {{t+|fy|alfabet|n|xs=West Frisian}} {{trans-bottom}} [[Category:Alphabets|*]] [[Category:Greek derivations]] [[Category:Orthography]] [[af:alphabet]] [[ar:alphabet]] [[ca:alphabet]] [[cs:alphabet]] [[de:alphabet]] [[et:alphabet]] [[el:alphabet]] [[fr:alphabet]] [[fy:alphabet]] [[ko:alphabet]] [[hy:alphabet]] [[io:alphabet]] [[id:alphabet]] [[it:alphabet]] [[kk:alphabet]] [[lt:alphabet]] [[hu:alphabet]] [[ja:alphabet]] [[no:alphabet]] [[oc:alphabet]] [[pl:alphabet]] [[pt:alphabet]] [[ro:alphabet]] [[ru:alphabet]] [[simple:alphabet]] [[fi:alphabet]] [[sv:alphabet]] [[tl:alphabet]] [[ta:alphabet]] [[te:alphabet]] [[vi:alphabet]] [[tr:alphabet]] [[vo:alphabet]] [[zh:alphabet]]", 

					"{{wikipedia}} {{also|Alphabet}} ==English== ===Etymology=== From {{LL.}} {{term|alphabetum|alphabētum|lang=la}} < {{etyl|grc}} {{term|sc=polytonic|αλφάβητος|tr=alphabētos|lang=grc}}, from the first two letters of the [[Greek alphabet]], {{term|alpha}} (Α) and {{term|beta}} (Β), from [[Phoenician]] {{term|aleph}} {{term|sc=Phnx|𐤀||ox|lang=phn}} and {{term|beth}} {{term|sc=Phnx|𐤁||house|lang=phn}}, so called because they were [[pictogram]]s of those objects.  ===Pronunciation=== * {{IPA|/ˈæl.fəˌbɛt/}}, {{SAMPA|/\"{lf@%bEt/}} * {{audio|en-us-alphabet.ogg|Audio (US)}} * {{hyphenation|al|pha|bet}} ===Noun=== {{en-noun}} # The set of [[letter]]s used when writing in a [[language]].  #:''The Greek '''alphabet''' has only twenty-four letters.'' #:''In the first year of school, pupils are taught to recite the '''alphabet'''.'' # {{computer science}} A, normally [[finite]], [[set]] of distinguishable [[symbol]]s.  #:''Let <math>L</math> be a regular language over the '''alphabet''' <math>\Sigma</math>''.  ====Derived terms==== * [[alphabetic]], [[alphabetical]] * [[alphabetize]] * [[alphabet soup]] * [[alphanumeric]], [[alphanumerical]] * [[Cyrillic alphabet]] * [[Greek alphabet]] * [[Latin alphabet]] * [[Phoenician alphabet]] * [[phonetic alphabet]] * [[Roman alphabet]] * [[Romanian alphabet]] * [[Russian alphabet]] * [[Ukrainian alphabet]] ====See also==== * [[Appendix:Hebrew alphabet]] ====Translations==== {{trans-top|an ordered set of letters used in a language}} * Albanian: {{t+|sq|alfabet|xs=Albanian}} * Alsatian: [[Alphabet]] * Arabic: {{Arab|[[حروف الهجاء|حُرُوفُ الهِجَاء]]}} {{IPAchar|(ħurúːf al-hijáː’)}}, {{Arab|[[ابجد|أبْجَد]]}} {{IPAchar|(’ábʤad)}}, {{Arab|[[الألفباء|الألِفْبَاء]]}} {{IPAchar|(al-’alifbáː’)}} * Armenian: {{t-|hy|այբուբեն|tr=aybuben|sc=Armn|xs=Armenian}} * [[Asturian]]: [[alfabetu]] {{m}} * Bosnian: {{t+|bs|abeceda|f}} * Bulgarian: [[азбука]] (ázbuka) ''(Cyrillic alphabet) f'', [[алфабет]] (alfabet) * [[Catalan]]: [[alfabet]] {{m}} * Chinese: [[字母]] (zìmǔ) * Croatian: {{t+|hr|abeceda|f|alt=abecéda}}, {{t-|hr|alfabet|m|alt=alfàbēt}} * Czech: {{t+|cs|abeceda|f}} * Dutch: {{t+|nl|alfabet}} * Esperanto: {{t+|eo|alfabeto|xs=Esperanto}} * Estonian: {{t+|et|tähestik}} * Filipino: [[alpabeto]] * Finnish: {{t+|fi|aakkoset|p}}, {{t+|fi|aakkosto}} * French: {{t+|fr|alphabet|m}} * Georgian: [[ანბანი]] (anbani) * German: {{t+|de|Alphabet|n}} * Greek: {{t+|el|αλφάβητο|n|sc=Grek}} (alfávito) * Hebrew: [[אלף־בית]] (alef-bét), [[אלפבית]] (alpabet) * Hungarian: {{t+|hu|ábécé}} * Icelandic: {{t+|is|stafróf|n}}, {{t-|is|rittáknakerfi|n}} * [[Ido]]: [[alfabeto]] * Indonesian: {{t+|id|abjad|xs=Indonesian}}, {{t+|id|alfabet|xs=Indonesian}} {{trans-mid}} * [[Interlingua]]: [[alphabeto]] * Italian: {{t+|it|alfabeto|m}} * " + 
					"Japanese: {{t+|ja|アルファベット|tr=arufabetto|sc=Jpan}} * Korean: [[알파벳]] (alpabet) * Latin: {{t+|la|alphabetum|n}}, {{t+|la|abecedarium|n|alt=abecedārium}} * Lithuanian: [[abėcėlė]] {{f}}, [[alfabetas]] {{m}} * Maltese: {{t-|mt|alfabet|xs=Maltese}} * Norwegian: {{t+|no|alfabet|n}} * Polish: {{t+|pl|alfabet|m}} * Portuguese: {{t+|pt|alfabeto|m}} * Romanian: {{t+|ro|alfabet|n}} * Russian: {{t+|ru|алфавит|m|tr=alfavít|sc=Cyrl}}, {{t+|ru|азбука|f|tr=ázbuka|sc=Cyrl}} * Serbian: *: Cyrillic: [[азбука]] ''(Cyrillic alphabet) f'', [[абецеда]] ''(Roman alphabet) f'' *: Roman: [[azbuka]] ''(Cyrillic alphabet) f'', [[abeceda]] ''(Roman alphabet) f'' * Slovene: {{t+|sl|abeceda|f}} * Spanish: {{t+|es|alfabeto|m}}, {{t+|es|abecedario|m}} * Swedish: {{t+|sv|alfabet|n}} * [[Tatar]]: [[älifba]] * [[Telugu]]: {{t|te|అక్షరమాల|tr=aksharamaala|sc=Telu}} * Thai: {{Thai|[[ตัวอักษร]]}} (tua akson), {{Thai|[[อักษร]]}} (akson) * Ukrainian: {{t+|uk|абетка|f|tr=abétka|sc=Cyrl|xs=Ukrainian}}, {{t+|uk|алфавіт|m|tr=alfávít|sc=Cyrl|xs=Ukrainian}}, {{t-|uk|азбука|f|tr=azbúka|sc=Cyrl|xs=Ukrainian}}, {{t-|uk|альфабет|m|tr=al’fabét|sc=Cyrl|xs=Ukrainian}} * [[Volapük]]: {{t+|vo|lafab|xs=Volapük}} * [[West Frisian]]: {{t+|fy|alfabet|n|xs=West Frisian}} {{trans-bottom}} [[Category:Alphabets|*]] [[Category:Greek derivations]] [[Category:Orthography]] [[af:alphabet]] [[ar:alphabet]] [[ca:alphabet]] [[cs:alphabet]] [[de:alphabet]] [[et:alphabet]] [[el:alphabet]] [[fr:alphabet]] [[fy:alphabet]] [[ko:alphabet]] [[hy:alphabet]] [[io:alphabet]] [[id:alphabet]] [[it:alphabet]] [[kk:alphabet]] [[lt:alphabet]] [[hu:alphabet]] [[ja:alphabet]] [[no:alphabet]] [[oc:alphabet]] [[pl:alphabet]] [[pt:alphabet]] [[ro:alphabet]] [[ru:alphabet]] [[simple:alphabet]] [[fi:alphabet]] [[sv:alphabet]] [[tl:alphabet]] [[ta:alphabet]] [[te:alphabet]] [[vi:alphabet]] [[tr:alphabet]] [[vo:alphabet]] [[zh:alphabet]]",
					"{{wikipedia}} {{also|Alphabet}} ==English== ===Etymology=== From {{LL.}} {{term|alphabetum|alphabētum|lang=la}} < {{etyl|grc}} {{term|sc=polytonic|αλφάβητος|tr=alphabētos|lang=grc}}, from the first two letters of the [[Greek alphabet]], {{term|alpha}} (Α) and {{term|beta}} (Β), from [[Phoenician]] {{term|aleph}} {{term|sc=Phnx|𐤀||ox|lang=phn}} and {{term|beth}} {{term|sc=Phnx|𐤁||house|lang=phn}}, so called because they were [[pictogram]]s of those objects.  ===Pronunciation=== * {{IPA|/ˈæl.fəˌbɛt/}}, {{SAMPA|/\"{lf@%bEt/}} * {{audio|en-us-alphabet.ogg|Audio (US)}} * {{hyphenation|al|pha|bet}} ===Noun=== {{en-noun}} # An ordered set of [[letter]]s used in a [[language]], for example the [[English]] alphabet.  # {{math}} In [[mathematics]], the finite set of symbols accepted by a given language.  ====Derived terms==== * [[alphabetic]], [[alphabetical]] * [[alphabetize]] * [[alphabet soup]] * [[alphanumeric]], [[alphanumerical]] * [[Cyrillic alphabet]] * [[Greek alphabet]] * [[Latin alphabet]] * [[Phoenician alphabet]] * [[phonetic alphabet]] * [[Roman alphabet]] * [[Romanian alphabet]] * [[Russian alphabet]] * [[Ukrainian alphabet]] ====See also==== * [[Appendix:Hebrew alphabet]] ====Translations==== {{trans-top|an ordered set of letters used in a language}} * Albanian: {{t+|sq|alfabet|xs=Albanian}} * Alsatian: [[Alphabet]] * Arabic: {{Arab|[[حروف الهجاء|حُرُوفُ الهِجَاء]]}} {{IPAchar|(ħurúːf al-hijáː’)}}, {{Arab|[[ابجد|أبْجَد]]}} {{IPAchar|(’ábʤad)}}, {{Arab|[[الألفباء|الألِفْبَاء]]}} {{IPAchar|(al-’alifbáː’)}} * Armenian: {{t-|hy|այբուբեն|tr=aybuben|sc=Armn|xs=Armenian}} * [[Asturian]]: [[alfabetu]] {{m}} * Bosnian: {{t+|bs|abeceda|f}} * Bulgarian: [[азбука]] (ázbuka) ''(Cyrillic alphabet) f'', [[алфабет]] (alfabet) * [[Catalan]]: [[alfabet]] {{m}} * Chinese: [[字母]] (zìmǔ) * Croatian: {{t+|hr|abeceda|f|alt=abecéda}}, {{t-|hr|alfabet|m|alt=alfàbēt}} * Czech: {{t+|cs|abeceda|f}} * Dutch: {{t+|nl|alfabet}} * Esperanto: {{t+|eo|alfabeto|xs=Esperanto}} * Estonian: {{t+|et|tähestik}} * Filipino: [[alpabeto]] * Finnish: {{t+|fi|aakkoset|p}}, {{t+|fi|aakkosto}} * French: {{t+|fr|alphabet|m}} * Georgian: [[ანბანი]] (anbani) * German: {{t+|de|Alphabet|n}} * Greek: {{t+|el|αλφάβητο|n|sc=Grek}} (alfávito) * Hebrew: [[אלף־בית]] (alef-bét), [[אלפבית]] (alpabet) * Hungarian: {{t+|hu|ábécé}} * Icelandic: {{t+|is|stafróf|n}}, {{t-|is|rittáknakerfi|n}} * [[Ido]]: [[alfabeto]] * Indonesian: {{t+|id|abjad|xs=Indonesian}}, {{t+|id|alfabet|xs=Indonesian}} {{trans-mid}} * [[Interlingua]]: [[alphabeto]] * Italian: {{t+|it|alfabeto|m}} * Japanese: {{t+|ja|アルファベット|tr=arufabetto|sc=Jpan}}, {{t+|ja|文字|tr=moji|sc=Jpan}} * Korean: [[알파벳]] (alpabet) * Latin: {{t+|la|alphabetum|n}}, {{t+|la|abecedarium|n|alt=abecedārium}} * "+
					"Lithuanian: [[abėcėlė]] {{f}}, [[alfabetas]] {{m}} * Maltese: {{t-|mt|alfabet|xs=Maltese}} * Norwegian: {{t+|no|alfabet|n}} * Polish: {{t+|pl|alfabet|m}} * Portuguese: {{t+|pt|alfabeto|m}} * Romanian: {{t+|ro|alfabet|n}} * Russian: {{t+|ru|алфавит|m|tr=alfavít|sc=Cyrl}}, {{t+|ru|азбука|f|tr=ázbuka|sc=Cyrl}} * Serbian: *: Cyrillic: [[азбука]] ''(Cyrillic alphabet) f'', [[абецеда]] ''(Roman alphabet) f'' *: Roman: [[azbuka]] ''(Cyrillic alphabet) f'', [[abeceda]] ''(Roman alphabet) f'' * Slovene: {{t+|sl|abeceda|f}} * Spanish: {{t+|es|alfabeto|m}}, {{t+|es|abecedario|m}} * Swedish: {{t+|sv|alfabet|n}} * [[Tatar]]: [[älifba]] * [[Telugu]]: {{t|te|అక్షరమాల|tr=aksharamaala|sc=Telu}} * Thai: {{Thai|[[ตัวอักษร]]}} (tua akson), {{Thai|[[อักษร]]}} (akson) * Ukrainian: {{t+|uk|абетка|f|tr=abétka|sc=Cyrl|xs=Ukrainian}}, {{t+|uk|алфавіт|m|tr=alfávít|sc=Cyrl|xs=Ukrainian}}, {{t+|uk|азбука|f|tr=azbúka|sc=Cyrl|xs=Ukrainian}}, {{t-|uk|альфабет|m|tr=al’fabét|sc=Cyrl|xs=Ukrainian}} * [[Volapük]]: {{t+|vo|lafab|xs=Volapük}} * [[West Frisian]]: {{t+|fy|alfabet|n|xs=West Frisian}} {{trans-bottom}} [[Category:Alphabets|*]] [[Category:Greek derivations]] [[Category:Orthography]] [[af:alphabet]] [[ar:alphabet]] [[ca:alphabet]] [[cs:alphabet]] [[de:alphabet]] [[et:alphabet]] [[el:alphabet]] [[es:alphabet]] [[fr:alphabet]] [[fy:alphabet]] [[ko:alphabet]] [[hy:alphabet]] [[io:alphabet]] [[id:alphabet]] [[it:alphabet]] [[kk:alphabet]] [[lo:alphabet]] [[lt:alphabet]] [[hu:alphabet]] [[ja:alphabet]] [[no:alphabet]] [[oc:alphabet]] [[pl:alphabet]] [[pt:alphabet]] [[ro:alphabet]] [[ru:alphabet]] [[simple:alphabet]] [[fi:alphabet]] [[sv:alphabet]] [[tl:alphabet]] [[ta:alphabet]] [[te:alphabet]] [[th:alphabet]] [[vi:alphabet]] [[tr:alphabet]] [[vo:alphabet]] [[zh:alphabet]]",
					"{{wikipedia}} {{also|Alphabet}} ==English== ===Etymology=== From {{LL.}} {{term|alphabetum|alphabētum|lang=la}} < {{etyl|grc}} {{term|sc=polytonic|αλφάβητος|tr=alphabētos|lang=grc}}, from the first two letters of the [[Greek alphabet]], {{term|alpha}} (Α) and {{term|beta}} (Β), from [[Phoenician]] {{term|aleph}} {{term|sc=Phnx|𐤀||ox|lang=phn}} and {{term|beth}} {{term|sc=Phnx|𐤁||house|lang=phn}}, so called because they were [[pictogram]]s of those objects.  ===Pronunciation=== * {{IPA|/ˈæl.fəˌbɛt/}}, {{SAMPA|/\"{lf@%bEt/}} * {{audio|en-us-alphabet.ogg|Audio (US)}} * {{hyphenation|al|pha|bet}} ===Noun=== {{en-noun}} # The set of [[letter]]s used when writing in a [[language]].  #:''The Greek '''alphabet''' has only twenty-four letters.'' #:''In the first year of school, pupils are taught to recite the '''alphabet'''.'' # {{computer science}} A, normally [[finite]], [[set]] of distinguishable [[symbol]]s.  #:''Let <math>L</math> be a regular language over the '''alphabet''' <math>\Sigma</math>''.  ====Derived terms==== * [[alphabetic]], [[alphabetical]] * [[alphabetize]] * [[alphabet soup]] * [[alphanumeric]], [[alphanumerical]] * [[Cyrillic alphabet]] * [[Greek alphabet]] * [[Latin alphabet]] * [[Phoenician alphabet]] * [[phonetic alphabet]] * [[Roman alphabet]] * [[Romanian alphabet]] * [[Russian alphabet]] * [[Ukrainian alphabet]] ====See also==== * [[Appendix:Hebrew alphabet]] ====Translations==== {{trans-top|an ordered set of letters used in a language}} * Albanian: {{t+|sq|alfabet|xs=Albanian}} * Alsatian: [[Alphabet]] * Arabic: {{Arab|[[حروف الهجاء|حُرُوفُ الهِجَاء]]}} {{IPAchar|(ħurúːf al-hijáː’)}}, {{Arab|[[ابجد|أبْجَد]]}} {{IPAchar|(’ábʤad)}}, {{Arab|[[الألفباء|الألِفْبَاء]]}} {{IPAchar|(al-’alifbáː’)}} * Armenian: {{t-|hy|այբուբեն|tr=aybuben|sc=Armn|xs=Armenian}} * [[Asturian]]: [[alfabetu]] {{m}} * Bosnian: {{t+|bs|abeceda|f}} * Bulgarian: [[азбука]] (ázbuka) ''(Cyrillic alphabet) f'', [[алфабет]] (alfabet) * [[Catalan]]: [[alfabet]] {{m}} * Chinese: [[字母]] (zìmǔ) * Croatian: {{t+|hr|abeceda|f|alt=abecéda}}, {{t-|hr|alfabet|m|alt=alfàbēt}} * Czech: {{t+|cs|abeceda|f}} * Dutch: {{t+|nl|alfabet}} * Esperanto: {{t+|eo|alfabeto|xs=Esperanto}} * Estonian: {{t+|et|tähestik}} * Filipino: [[alpabeto]] * Finnish: {{t+|fi|aakkoset|p}}, {{t+|fi|aakkosto}} * French: {{t+|fr|alphabet|m}} * Georgian: [[ანბანი]] (anbani) * German: {{t+|de|Alphabet|n}} * Greek: {{t+|el|αλφάβητο|n|sc=Grek}} (alfávito) * Hebrew: [[אלף־בית]] (alef-bét), [[אלפבית]] (alpabet) * Hungarian: {{t+|hu|ábécé}} * Icelandic: {{t+|is|stafróf|n}}, {{t-|is|rittáknakerfi|n}} * [[Ido]]: [[alfabeto]] * Indonesian: {{t+|id|abjad|xs=Indonesian}}, {{t+|id|alfabet|xs=Indonesian}} {{trans-mid}} * [[Interlingua]]: [[alphabeto]] * Italian: {{t+|it|alfabeto|m}} * "+
					"Japanese: {{t+|ja|アルファベット|tr=arufabetto|sc=Jpan}}, {{t+|ja|文字|tr=moji|sc=Jpan}} * Korean: [[알파벳]] (alpabet) * Latin: {{t+|la|alphabetum|n}}, {{t+|la|abecedarium|n|alt=abecedārium}} * Lithuanian: [[abėcėlė]] {{f}}, [[alfabetas]] {{m}} * Maltese: {{t-|mt|alfabet|xs=Maltese}} * Norwegian: {{t+|no|alfabet|n}} * Polish: {{t+|pl|alfabet|m}} * Portuguese: {{t+|pt|alfabeto|m}} * Romanian: {{t+|ro|alfabet|n}} * Russian: {{t+|ru|алфавит|m|tr=alfavít|sc=Cyrl}}, {{t+|ru|азбука|f|tr=ázbuka|sc=Cyrl}} * Serbian: *: Cyrillic: [[азбука]] ''(Cyrillic alphabet) f'', [[абецеда]] ''(Roman alphabet) f'' *: Roman: [[azbuka]] ''(Cyrillic alphabet) f'', [[abeceda]] ''(Roman alphabet) f'' * Slovene: {{t+|sl|abeceda|f}} * Spanish: {{t+|es|alfabeto|m}}, {{t+|es|abecedario|m}} * Swedish: {{t+|sv|alfabet|n}} * [[Tatar]]: [[älifba]] * [[Telugu]]: {{t|te|అక్షరమాల|tr=aksharamaala|sc=Telu}} * Thai: {{Thai|[[ตัวอักษร]]}} (tua akson), {{Thai|[[อักษร]]}} (akson) * Ukrainian: {{t+|uk|абетка|f|tr=abétka|sc=Cyrl|xs=Ukrainian}}, {{t+|uk|алфавіт|m|tr=alfávít|sc=Cyrl|xs=Ukrainian}}, {{t+|uk|азбука|f|tr=azbúka|sc=Cyrl|xs=Ukrainian}}, {{t-|uk|альфабет|m|tr=al’fabét|sc=Cyrl|xs=Ukrainian}} * [[Volapük]]: {{t+|vo|lafab|xs=Volapük}} * [[West Frisian]]: {{t+|fy|alfabet|n|xs=West Frisian}} {{trans-bottom}} [[Category:Alphabets|*]] [[Category:Greek derivations]] [[Category:Orthography]] [[af:alphabet]] [[ar:alphabet]] [[ca:alphabet]] [[cs:alphabet]] [[de:alphabet]] [[et:alphabet]] [[el:alphabet]] [[es:alphabet]] [[fr:alphabet]] [[fy:alphabet]] [[ko:alphabet]] [[hy:alphabet]] [[io:alphabet]] [[id:alphabet]] [[it:alphabet]] [[kk:alphabet]] [[lo:alphabet]] [[lt:alphabet]] [[hu:alphabet]] [[ja:alphabet]] [[no:alphabet]] [[oc:alphabet]] [[pl:alphabet]] [[pt:alphabet]] [[ro:alphabet]] [[ru:alphabet]] [[simple:alphabet]] [[fi:alphabet]] [[sv:alphabet]] [[tl:alphabet]] [[ta:alphabet]] [[te:alphabet]] [[th:alphabet]] [[vi:alphabet]] [[tr:alphabet]] [[vo:alphabet]] [[zh:alphabet]]"],

				//Cases where some parts of the change fail, and other's dont.
				["this pitch should be hafl right", "this potch should be half right", "this patch should be hafl right", "this patch should be half right"],

				//Cases where the algorithm should definitely fail.
				["this patch shud fail", "this patch shoud fail", "this patch should fail", null],
				["hello world!", "world hello!", "goodbye world!", null],
				["what if there are too many, what if there is too many, what if there are too many possible insert points", "what if there is too many possible insert points", "what if there are too many, what if there are too many possible insert points", null],
				["when we make too many conflicting moves", "when make too many we conflicting moves", "when we too many conflicting make moves", null],
				//Interesting that the lack of initial space causes it to act correctly... 
				[" hello kind world hello kind world hello kind world", " hello kind world hello cruel world hello kind world", " hello cruel world hello cruel world",null],

				//Cases where a human could resolve the diffs, but the algorithm fails
				["shoud this patch fail", "should this patch fail", "this patch shoud fail", "this patch should fail"],
				["thereisaproblemwhenpeopleenterreallylongwords", "thereareproblemswhenpeopleenterreallylongwords", "thereisaproblemwhenpeopleenterareallylongword","thereareproblemswhenpeopleenterareallylongword"],
				["<p><b>it might be nyce</b> to treat HTML and words<hr/>distinctly</p>", "<p><b>it might be nice</b> to treat HTML and words distinctly</p>", "<p><i>it might be nyce</i> to treat HTML and words<hr/>distinctly</p>", "<p><i>it might be nice</i> to treat HTML and words distinctly</p>"],
				
				//Cases where the algorithm applies changes incorrectly/applies changes that shouldn't work
				//These case should really be fixed... may not be easily possible without breaking LOTS of other stuff.
				//Repitition is a killer!
				["hello kind world hello kind world", "hello cruel world hello kind world", "hello cruel world hello kind world","hello cruel world hello kind world"],
				[" hello kind world hello kind world hello kind world", " hello kind world hello cruel world hello kind world", " hello kind world hello kind world",null],
				[" hello kind world hello kind world", " hello cruel world hello kind world", " hello cruel world hello kind world"," hello cruel world hello kind world"],
				];
				var diff = Diff;
				var errormessage = "";
				var handler = {
					diffError: function (diff) {
						errormessage += "duff()";
					},

					blockError: function (block) {
						errormessage += "block('"+block.bs+block.as+"'..'"+block.be+block.ae+ "') could not be found\n";
					},

					changeError: function (change) {
						errormessage += "change('"+change.bs+change.as+"'..'"+change.be+change.ae+"') could not be found\n";
					}
				}
            function doDiff () {

                var f = getNode('fred');
                var g = getNode('george');
                var j = getNode('ginny');
				var r = getNode('ron');

                var p = diff.stableDiff(f.value,g.value);
				getNode('log').innerHTML = '';
                getNode('log').appendChild(inspect(p,10));
                getNode('ron').value = diff.stablePatch(p, j.value,handler);
				getNode('errors').innerHTML = errormessage;
				errormessage = ""
			}

			
			window.setTimeout(function(){
                var f = getNode('fred');
                var g = getNode('george');
                var j = getNode('ginny');
				var r = getNode('ron');
				
                for(var i=0; i< testcase.length; i++) 
                {
                    try{
                        var d = diff.stableDiff(testcase[i][0], testcase[i][1]);
                        var r = diff.stablePatch(d, testcase[i][2], handler);
                        if (r == (testcase[i][3] || testcase[i][2] ))
                            color = (errormessage != "") ? "#CCCCFF" :"#CCFFCC";
                        else
                            color = (errormessage != "") ? "#EEEEAA" : "#FFCCCC";

                        getNode('test').appendChild(
							newNode('tr', {style: 'background-color: '+ color+';', click:
							   	function() {f.value=this.childNodes[0].firstChild.nodeValue; g.value=this.childNodes[1].firstChild.nodeValue; j.value=this.childNodes[2].firstChild.nodeValue; doDiff()}},
                                newNode('td',testcase[i][0]),
                                newNode('td',testcase[i][1]),
                                newNode('td',testcase[i][2]),
                                newNode('td',testcase[i][3] || testcase[i][2]),
                                newNode('td',r),
								newNode('td',errormessage)
                            )
                        );
                    } catch(e) {
                        var td = newNode('td', {colspan: 6});
                        td.appendChild(inspect(e)); //gah, rewrite that ghastly inspect function
                        getNode('test').appendChild(
                                newNode('tr', {style: 'background-color: #FFEEEE;'},
                                    td
                                    )
                                );
                    }
					errormessage = "";

                }
                
            }, 100);
        </script>
    </head>
    <body>
		<div id="top">
			<h1>Project Oscar - Graphical Shared Wiki Editor</h1>
			<h2>Diff Test</h2>
			<br class="clear" />
		</div>
		<div id="main">
			<div onclick="return doDiff()">Test</div>
			<form method="post" action="#">
				<table><tbody id="test">
					<tr>
						<td><textarea rows="5" cols="20" name="fred" id="fred" >one tow three four fvie</textarea></td>
						<td><textarea rows="5" cols="20" name="george" id="george" >one two three four fvie</textarea></td>
						<td><textarea rows="5" cols="20" name="ginny" id="ginny" >one tow three four five</textarea></td>
						<td><textarea rows="5" cols="20" name="ron" id="ron" ></textarea></td>
						<td id="errors"></td>
					</tr>
					<tr><th>Diff representation</th><td colspan="4" id="log"></td></tr>
					<tr><th>Original</th><th>Diff with</th><th>Patch with</th><th>Expected</th><th>Result</th><th>Errors</th></tr>
					<tr><td style="background-color: #CCFFCC">Successfully applied patch, no messages</td>
						<td style="background-color: #CCCCFF">Behaved correctly, generated messages</td>
						<td style="background-color: #EEEEAA">Behaved incorrectly, but generated a message</td>
						<td style="background-color: #FFCCCC">Behaved incorrectly, and did not generate a message</td>
						<td></td>
						<td></td>
					</tr>
				</tbody></table>
			</form>
		</div>
    </body>
</html>

